home *** CD-ROM | disk | FTP | other *** search
Text File | 1985-05-31 | 1.3 KB | 69 lines | [TEXT/TRUE] |
- ! Library of hyperbolic functions
- ! Copyright (c) 1985 by True BASIC, Inc.
-
- EXTERNAL
-
- DEF sinh(x) = (exp(x)-exp(-x))/2
-
- DEF cosh(x) = (exp(x)+exp(-x))/2
-
- DEF tanh(x)
- DECLARE DEF sinh, cosh
- LET tanh = sinh(x)/cosh(x)
- END DEF
-
- DEF coth(x)
- DECLARE DEF sinh, cosh
- LET coth = cosh(x)/sinh(x)
- END DEF
-
- DEF sech(x)
- DECLARE DEF cosh
- LET sech = 1/cosh(x)
- END DEF
-
- DEF csch(x)
- DECLARE DEF sinh
- IF x=0 then CAUSE EXCEPTION -3000, "Argument not in range"
- LET csch = 1/sinh(x)
- END DEF
-
- DEF asinh(x) = log(x + sqr(x*x+1))
-
- DEF acosh(x)
- IF abs(x)<1 then
- CAUSE EXCEPTION -3000, "Argument not in range"
- ELSE
- LET acosh = log(x + sqr(x*x-1))
- END IF
- END DEF
-
- DEF atanh(x)
- IF abs(x)>=1 then
- CAUSE EXCEPTION -3000, "Argument not in range"
- ELSE
- LET atanh = log((1+x)/(1-x))/2
- END IF
- END DEF
-
- DEF acoth(x)
- IF abs(x)<=1 then
- CAUSE EXCEPTION -3000, "Argument not in range"
- ELSE
- LET acoth = log((1+x)/(x-1))/2
- END IF
- END DEF
-
- DEF asech(x)
- IF abs(x)>1 then
- CAUSE EXCEPTION -3000, "Argument not in range"
- ELSE
- LET asech = log((1+sqr(1-x*x))/x)
- END IF
- END DEF
-
- DEF acsch(x)
- IF x=0 then CAUSE EXCEPTION -3000, "Argument not in range"
- LET acsch = log((1+sgn(x)*sqr(x*x+1))/x)
- END DEF
-